package _20250227;

import java.util.HashMap;
import java.util.Map;

public class AverageValue {
    /**
     * 5.假设有一个Map<String, Integer>，键为商品名称，值为商品价格。请通过 Stream 流计算所有商品价格的平均值。
     */
    public static void main(String[] args)  {
// 测试数据 1：常规数据，包含多个不同价格的商品
        Map<String, Integer> map1 = new HashMap<>();
        map1.put("苹果", 5);
        map1.put("香蕉", 3);
        map1.put("橙子", 4);
        map1.put("葡萄", 6);

// 测试数据 2：只有一个商品的情况
        Map<String, Integer> map2 = new HashMap<>();
        map2.put("牛奶", 10);

// 测试数据 3：所有商品价格相同的情况
        Map<String, Integer> map3 = new HashMap<>();
        map3.put("面包", 8);
        map3.put("蛋糕", 8);
        map3.put("饼干", 8);

// 测试数据 4：空的 Map
        Map<String, Integer> map4 = new HashMap<>();

// 测试数据 5：包含价格为 0 的商品
        Map<String, Integer> map5 = new HashMap<>();
        map5.put("矿泉水", 0);
        map5.put("巧克力", 15);
        map5.put("薯片", 8);

// 测试数据 6：包含较大数值的商品价格
        Map<String, Integer> map6 = new HashMap<>();
        map6.put("电脑", 8000);
        map6.put("手机", 5000);
        map6.put("平板", 3000);

// 测试数据 7：键值对数量较多的情况
        Map<String, Integer> map7 = new HashMap<>();
        map7.put("商品 1", 12);
        map7.put("商品 2", 25);
        map7.put("商品 3", 18);
        map7.put("商品 4", 30);
        map7.put("商品 5", 22);
        map7.put("商品 6", 15);

        System.out.println(averageValue(map1));
        System.out.println(averageValue(map2));
        System.out.println(averageValue(map3));
        System.out.println(averageValue(map4));
        System.out.println(averageValue(map5));
        System.out.println(averageValue(map6));
        System.out.println(averageValue(map7));

    }

    /**
     *  计算平均值
     * @param map 待求平均值的商品
     * @return  返回平均值
     */
    private static double averageValue(Map<String, Integer> map)  {

           if(map==null||map.isEmpty()){
               return 0;
           }
           return map.values().stream()
                   .mapToInt(Integer::intValue)
                   .average()
                   .orElse(0);
       }

    }




